Symfonos 3
El escaneo con Nmap reporta abiertos los puertos 21, 22 y 80
La web no muestra nada interesante, pero en el código fuente se muestra una pregunta acerca del Underworld.
Hacemos Fuzzing con Gobuster para encontrar directorios, entre ellos destaca el /cgi-bin/. Este solo aparece con el uso del parámetro --add-slash
Probando este directorio vemos que con la diferencia de un / nos muestra 2 respuestas distintas; 403 y 404. Por tanto vamos a investigar sobre el mismo.
Volviendo a hacer Fuzzing sobre este directorio encontramos el Underworld
Se muestra la primera línea del comando top de Linux. Por lo que podemos asumir que es una bash ejecutándose por detrás.
top | head -n 1
Intentamos buscar información en caso de ser una bash vulnerable. En este enlace encontramos información sobre esta vulnerabilidad: https://blog.cloudflare.com/inside-shellshock
curl -H "User-Agent: () { :; }; /bin/eject" http://example.com/
Lanzamos el ataque con Curl probando explotar el User-Agent y nos sale un Internal Server Error. Ante esta respuesta podemos intentar probar incluir un echo; delante del comando a ejecutar y funciona
En este punto nos podemos enviar una reverse shell para la que no es necesario que esté codificado en formato URL
Vamos a listar los comando o tareas que se estén ejecutando en el sistema en intervalos regulares de tiempo. Para ellos usaremos la herramienta Pspy
Esperado un tiempo vemos que hay un fichero ftpclient.py que se ejecuta periódicamente en el directorio /opt
Listando los detalles de la ruta del archivo python vemos que solo tienen acceso 2 usuarios: hades y root. Debemos acceder de otra forma
Como el nombre del fichero nos sugiere que emplea el FTP y es un servicio de trasferencia de datos que no utiliza cifrado, vamos a capturar algunos paquetes que se transmitan
Con tcpdump -D primero listamos las interfaces en las que nos podemos poner en escucha y luego capturamos el tráfico de datos a través de la interfaz seleccionada, en este caso la loopback.
Para recibir el archivo en nuestro equipo nos pondremos en escucha con Netcat y todo lo que recibamos por este puerto lo enviaremos a un archivo
Leemos el fichero con Tshark y encontramos las credenciales de un usuario
Con estas credenciales nos conectamos por SSH
Una vez dentro y como este usuario, que era uno de los 2 autorizados a entrar en el directorio /opt, podemos revisar el contenido del script que reveló Pspy; el cual nos da una pista de como escalar privilegios. Ya que no se cuenta con permisos de escritura sobre el script, se puede intentar alterar la librería que importa, cayendo en un Library Hijacking
Viendo que ahora pertenecemos al grupo gods, buscamos archivos sobre los que tengamos permisos elevados, y uno de estos puede ser la librería que mencionamos antes.
Podemos editar la librería añadiendo la siguiente línea para otorgar privilegios a la bash
os.system("chmod u+s /bin/bash")
Observamos los permisos de la bash constantemente con watch y veremos que cambian
Se asignan permisos a la bash y ya seremos root.
